// 导入http请求库
import { defHttp } from '@/utils/http/axios';
// 导入相关的接口参数和返回值类型
import { RoleListItem } from './model/roleModel';
// 导入错误消息模式

const prefix = 'department/';

// 定义接口枚举
enum Api {
  List = prefix + 'list', // 列表
  Save = prefix + 'save', // 保存 新增/修改
  Details = prefix + 'details', // 保存 新增/修改
  Delete = prefix + 'delete', // 删除
  Import = prefix + 'import', // 导入
  Status = prefix + 'status', // 修改状态
  Export = prefix + 'export', // 导出
  Option = prefix + 'option', // 查询下拉框值
}

/**
 * @description: 获取列表接口
 * @param {any} params 查询参数
 */
export function getDeptList(params: any) {
  return defHttp.get<RoleListItem>(
    { url: Api.List, params },
    {
      errorMessageMode: 'message',
    },
  );
}

/**
 * @description: 获取详情接口
 * @param {{ id: number }} params ID
 */
export function getDetailsApi(params: { id: number }) {
  return defHttp.get<RoleListItem>(
    { url: Api.Details, params },
    {
      errorMessageMode: 'message',
    },
  );
}

/**
 * @description: 保存接口（新增/修改）
 * @param {any} params 信息
 */
export function saveDetailsApi(params: any) {
  return defHttp.post(
    { url: Api.Save, params },
    {
      errorMessageMode: 'message',
    },
  );
}

/**
 * @description: 删除接口
 * @param {{ id: number }} params ID
 */
export function deleteDepartmentApi(params: { id: number }) {
  return defHttp.get(
    { url: Api.Delete, params },
    {
      errorMessageMode: 'message',
    },
  );
}

/**
 * @description: 导入接口
 * @param {{ id: number }} params ID
 */
export function importApi(params: { id: number }) {
  return defHttp.post(
    { url: Api.Import, params },
    {
      errorMessageMode: 'message',
    },
  );
}

/**
 * @description: 导出接口
 * @param {any} params 查询参数
 */
export function exportApi(params) {
  return defHttp.get(
    { url: Api.Export, params },
    {
      errorMessageMode: 'message',
    },
  );
}

/**
 * @description: 获取下拉框值
 */
export function getDepartmentOption() {
  return defHttp
    .get<RoleListItem>(
      { url: Api.Option },
      {
        errorMessageMode: 'message',
      },
    )
    .then((res) => {
      res.unshift({ id: 0, name: '全部' });
      return res;
    });
}
